import md5 from 'js-md5'

const key = 'd404727329c5acd7f52e743fc2f8cd50'
const CalcuMD5 = function(url, params, methods) {
  const sortP = objKeySort(params)
  let md5str = url + '&' + methods +  sortP

  md5str = md5(md5(md5str.toLowerCase()) + key)
  // console.log(md5str)
  return md5str
}

//排序的函数
function objKeySort(arys) {
  //先用Object内置类的keys方法获取要排序对象的属性名，再利用Array原型上的sort方法对获取的属性名进行排序，newkey是一个数组
  var newkey = Object.keys(arys).sort()
  //console.log('newkey='+newkey);
  var newObj = {} //创建一个新的对象，用于存放排好序的键值对
  for (var i = 0; i < newkey.length; i++) {
    //遍历newkey数组
    newObj[newkey[i]] = arys[newkey[i]]
    //向新创建的对象中按照排好的顺序依次增加键值对

  }
  return urlEncode(newObj) //返回排好序的新对象
}

function urlEncode(param, key, encode) {
    if (param==null) return '';
    var paramStr = '';
    var t = typeof (param);
    if (t == 'string' || t == 'number' || t == 'boolean') {
        paramStr += '&' + key + '='  + ((encode==null||encode) ? encodeURIComponent(param) : param);
    } else {
        for (var i in param) {
            var k = key == null ? i : key + (param instanceof Array ? '[' + i + ']' : '.' + i)
            paramStr += urlEncode(param[i], k, encode)
        }
    }
    return paramStr;

}

export default CalcuMD5
